<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>CorrelatedRandomVectorGenerator (Apache Commons Math 3.6.1 API)</title>
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="CorrelatedRandomVectorGenerator (Apache Commons Math 3.6.1 API)";
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!--   -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/CorrelatedRandomVectorGenerator.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script></em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/commons/math3/random/BitsStreamGenerator.html" title="class in org.apache.commons.math3.random"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../../org/apache/commons/math3/random/EmpiricalDistribution.html" title="class in org.apache.commons.math3.random"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/commons/math3/random/CorrelatedRandomVectorGenerator.html" target="_top">Frames</a></li>
<li><a href="CorrelatedRandomVectorGenerator.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.commons.math3.random</div>
<h2 title="Class CorrelatedRandomVectorGenerator" class="title">Class CorrelatedRandomVectorGenerator</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.commons.math3.random.CorrelatedRandomVectorGenerator</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="../../../../../org/apache/commons/math3/random/RandomVectorGenerator.html" title="interface in org.apache.commons.math3.random">RandomVectorGenerator</a></dd>
</dl>
<hr>
<br>
<pre>public class <span class="strong">CorrelatedRandomVectorGenerator</span>
extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
implements <a href="../../../../../org/apache/commons/math3/random/RandomVectorGenerator.html" title="interface in org.apache.commons.math3.random">RandomVectorGenerator</a></pre>
<div class="block">A <a href="../../../../../org/apache/commons/math3/random/RandomVectorGenerator.html" title="interface in org.apache.commons.math3.random"><code>RandomVectorGenerator</code></a> that generates vectors with with
 correlated components.
 <p>Random vectors with correlated components are built by combining
 the uncorrelated components of another random vector in such a way that
 the resulting correlations are the ones specified by a positive
 definite covariance matrix.</p>
 <p>The main use for correlated random vector generation is for Monte-Carlo
 simulation of physical problems with several variables, for example to
 generate error vectors to be added to a nominal vector. A particularly
 interesting case is when the generated vector should be drawn from a <a
 href="http://en.wikipedia.org/wiki/Multivariate_normal_distribution">
 Multivariate Normal Distribution</a>. The approach using a Cholesky
 decomposition is quite usual in this case. However, it can be extended
 to other cases as long as the underlying random generator provides
 <a href="../../../../../org/apache/commons/math3/random/NormalizedRandomGenerator.html" title="interface in org.apache.commons.math3.random"><code>normalized values</code></a> like <a href="../../../../../org/apache/commons/math3/random/GaussianRandomGenerator.html" title="class in org.apache.commons.math3.random"><code>GaussianRandomGenerator</code></a> or <a href="../../../../../org/apache/commons/math3/random/UniformRandomGenerator.html" title="class in org.apache.commons.math3.random"><code>UniformRandomGenerator</code></a>.</p>
 <p>Sometimes, the covariance matrix for a given simulation is not
 strictly positive definite. This means that the correlations are
 not all independent from each other. In this case, however, the non
 strictly positive elements found during the Cholesky decomposition
 of the covariance matrix should not be negative either, they
 should be null. Another non-conventional extension handling this case
 is used here. Rather than computing <code>C = U<sup>T</sup>.U</code>
 where <code>C</code> is the covariance matrix and <code>U</code>
 is an upper-triangular matrix, we compute <code>C = B.B<sup>T</sup></code>
 where <code>B</code> is a rectangular matrix having
 more rows than columns. The number of columns of <code>B</code> is
 the rank of the covariance matrix, and it is the dimension of the
 uncorrelated random vector that is needed to compute the component
 of the correlated vector. This class handles this situation
 automatically.</p></div>
<dl><dt><span class="strong">Since:</span></dt>
  <dd>1.2</dd></dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_summary">
<!--   -->
</a>
<h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../../../org/apache/commons/math3/random/CorrelatedRandomVectorGenerator.html#CorrelatedRandomVectorGenerator(double[],%20org.apache.commons.math3.linear.RealMatrix,%20double,%20org.apache.commons.math3.random.NormalizedRandomGenerator)">CorrelatedRandomVectorGenerator</a></strong>(double[]&nbsp;mean,
                               <a href="../../../../../org/apache/commons/math3/linear/RealMatrix.html" title="interface in org.apache.commons.math3.linear">RealMatrix</a>&nbsp;covariance,
                               double&nbsp;small,
                               <a href="../../../../../org/apache/commons/math3/random/NormalizedRandomGenerator.html" title="interface in org.apache.commons.math3.random">NormalizedRandomGenerator</a>&nbsp;generator)</code>
<div class="block">Builds a correlated random vector generator from its mean
 vector and covariance matrix.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><strong><a href="../../../../../org/apache/commons/math3/random/CorrelatedRandomVectorGenerator.html#CorrelatedRandomVectorGenerator(org.apache.commons.math3.linear.RealMatrix,%20double,%20org.apache.commons.math3.random.NormalizedRandomGenerator)">CorrelatedRandomVectorGenerator</a></strong>(<a href="../../../../../org/apache/commons/math3/linear/RealMatrix.html" title="interface in org.apache.commons.math3.linear">RealMatrix</a>&nbsp;covariance,
                               double&nbsp;small,
                               <a href="../../../../../org/apache/commons/math3/random/NormalizedRandomGenerator.html" title="interface in org.apache.commons.math3.random">NormalizedRandomGenerator</a>&nbsp;generator)</code>
<div class="block">Builds a null mean random correlated vector generator from its
 covariance matrix.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!--   -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/random/NormalizedRandomGenerator.html" title="interface in org.apache.commons.math3.random">NormalizedRandomGenerator</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/CorrelatedRandomVectorGenerator.html#getGenerator()">getGenerator</a></strong>()</code>
<div class="block">Get the underlying normalized components generator.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/CorrelatedRandomVectorGenerator.html#getRank()">getRank</a></strong>()</code>
<div class="block">Get the rank of the covariance matrix.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code><a href="../../../../../org/apache/commons/math3/linear/RealMatrix.html" title="interface in org.apache.commons.math3.linear">RealMatrix</a></code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/CorrelatedRandomVectorGenerator.html#getRootMatrix()">getRootMatrix</a></strong>()</code>
<div class="block">Get the root of the covariance matrix.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>double[]</code></td>
<td class="colLast"><code><strong><a href="../../../../../org/apache/commons/math3/random/CorrelatedRandomVectorGenerator.html#nextVector()">nextVector</a></strong>()</code>
<div class="block">Generate a correlated random vector.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!--   -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long,%20int)" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_detail">
<!--   -->
</a>
<h3>Constructor Detail</h3>
<a name="CorrelatedRandomVectorGenerator(double[], org.apache.commons.math3.linear.RealMatrix, double, org.apache.commons.math3.random.NormalizedRandomGenerator)">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>CorrelatedRandomVectorGenerator</h4>
<pre>public&nbsp;CorrelatedRandomVectorGenerator(double[]&nbsp;mean,
                               <a href="../../../../../org/apache/commons/math3/linear/RealMatrix.html" title="interface in org.apache.commons.math3.linear">RealMatrix</a>&nbsp;covariance,
                               double&nbsp;small,
                               <a href="../../../../../org/apache/commons/math3/random/NormalizedRandomGenerator.html" title="interface in org.apache.commons.math3.random">NormalizedRandomGenerator</a>&nbsp;generator)</pre>
<div class="block">Builds a correlated random vector generator from its mean
 vector and covariance matrix.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>mean</code> - Expected mean values for all components.</dd><dd><code>covariance</code> - Covariance matrix.</dd><dd><code>small</code> - Diagonal elements threshold under which  column are
 considered to be dependent on previous ones and are discarded</dd><dd><code>generator</code> - underlying generator for uncorrelated normalized
 components.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/linear/NonPositiveDefiniteMatrixException.html" title="class in org.apache.commons.math3.linear">NonPositiveDefiniteMatrixException</a></code> - if the covariance matrix is not strictly positive definite.</dd>
<dd><code><a href="../../../../../org/apache/commons/math3/exception/DimensionMismatchException.html" title="class in org.apache.commons.math3.exception">DimensionMismatchException</a></code> - if the mean and covariance
 arrays dimensions do not match.</dd></dl>
</li>
</ul>
<a name="CorrelatedRandomVectorGenerator(org.apache.commons.math3.linear.RealMatrix, double, org.apache.commons.math3.random.NormalizedRandomGenerator)">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>CorrelatedRandomVectorGenerator</h4>
<pre>public&nbsp;CorrelatedRandomVectorGenerator(<a href="../../../../../org/apache/commons/math3/linear/RealMatrix.html" title="interface in org.apache.commons.math3.linear">RealMatrix</a>&nbsp;covariance,
                               double&nbsp;small,
                               <a href="../../../../../org/apache/commons/math3/random/NormalizedRandomGenerator.html" title="interface in org.apache.commons.math3.random">NormalizedRandomGenerator</a>&nbsp;generator)</pre>
<div class="block">Builds a null mean random correlated vector generator from its
 covariance matrix.</div>
<dl><dt><span class="strong">Parameters:</span></dt><dd><code>covariance</code> - Covariance matrix.</dd><dd><code>small</code> - Diagonal elements threshold under which  column are
 considered to be dependent on previous ones and are discarded.</dd><dd><code>generator</code> - Underlying generator for uncorrelated normalized
 components.</dd>
<dt><span class="strong">Throws:</span></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/linear/NonPositiveDefiniteMatrixException.html" title="class in org.apache.commons.math3.linear">NonPositiveDefiniteMatrixException</a></code> - if the covariance matrix is not strictly positive definite.</dd></dl>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!--   -->
</a>
<h3>Method Detail</h3>
<a name="getGenerator()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getGenerator</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/random/NormalizedRandomGenerator.html" title="interface in org.apache.commons.math3.random">NormalizedRandomGenerator</a>&nbsp;getGenerator()</pre>
<div class="block">Get the underlying normalized components generator.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>underlying uncorrelated components generator</dd></dl>
</li>
</ul>
<a name="getRank()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRank</h4>
<pre>public&nbsp;int&nbsp;getRank()</pre>
<div class="block">Get the rank of the covariance matrix.
 The rank is the number of independent rows in the covariance
 matrix, it is also the number of columns of the root matrix.</div>
<dl><dt><span class="strong">Returns:</span></dt><dd>rank of the square matrix.</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../org/apache/commons/math3/random/CorrelatedRandomVectorGenerator.html#getRootMatrix()"><code>getRootMatrix()</code></a></dd></dl>
</li>
</ul>
<a name="getRootMatrix()">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getRootMatrix</h4>
<pre>public&nbsp;<a href="../../../../../org/apache/commons/math3/linear/RealMatrix.html" title="interface in org.apache.commons.math3.linear">RealMatrix</a>&nbsp;getRootMatrix()</pre>
<div class="block">Get the root of the covariance matrix.
 The root is the rectangular matrix <code>B</code> such that
 the covariance matrix is equal to <code>B.B<sup>T</sup></code></div>
<dl><dt><span class="strong">Returns:</span></dt><dd>root of the square matrix</dd><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../org/apache/commons/math3/random/CorrelatedRandomVectorGenerator.html#getRank()"><code>getRank()</code></a></dd></dl>
</li>
</ul>
<a name="nextVector()">
<!--   -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>nextVector</h4>
<pre>public&nbsp;double[]&nbsp;nextVector()</pre>
<div class="block">Generate a correlated random vector.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../../org/apache/commons/math3/random/RandomVectorGenerator.html#nextVector()">nextVector</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/commons/math3/random/RandomVectorGenerator.html" title="interface in org.apache.commons.math3.random">RandomVectorGenerator</a></code></dd>
<dt><span class="strong">Returns:</span></dt><dd>a random vector as an array of double. The returned array
 is created at each call, the caller can do what it wants with it.</dd></dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!--   -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/CorrelatedRandomVectorGenerator.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><em><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script></em></div>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../org/apache/commons/math3/random/BitsStreamGenerator.html" title="class in org.apache.commons.math3.random"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../../org/apache/commons/math3/random/EmpiricalDistribution.html" title="class in org.apache.commons.math3.random"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/commons/math3/random/CorrelatedRandomVectorGenerator.html" target="_top">Frames</a></li>
<li><a href="CorrelatedRandomVectorGenerator.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2003&#x2013;2016 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>
